//打印1-100
//for(var i=1;i<=100;i++){
//	console.log(i);
//}

//计算1-100的和
// var sum = 0;
// for (var i = 1; i <= 100; i++) {
// 	sum += i;
// }
// console.log(sum);
//分别使用while/do-while/for循环实现10的阶乘（使用递归算法）。
//计算阶乘 10！10*9*8*...*1
//while
function test(num) {
	var str = '10!='
	var sum = 1;
	var i = num;
	while (i > 0) {
		sum *= i;
		if (i == 1) {
			str += i + '=';
		} else {
			str = str + i + '*';
		}
		i--;
	}
	console.log(str + sum);
}
test(10);

//do-whlie
function test(num) {
	var str = '10!='
	var sum = 1;
	var i = num;
	do {
		sum *= i;
		if (i == 1) {
			str += i + '=';
		} else {
			str = str + i + '*';
		}
		i--;
	} while (i > 0)
	console.log(str + sum);
}
test(10);

//for
function test(num) {
	var str = '10!='
	var sum = 1;
	for (var i = num; i > 0; i--) {
		sum *= i;
		if (i == 1) {
			str += i + '=';
		} else {
			str = str + i + '*';
		}
	}
	console.log(str + sum);
}
test(10);


//九九乘法表
function test2() {
	for (var i = 1; i < 10; i++) {
		var str = '';
		for (var j = 1; j <= i; j++) {
			str += j + '*' + i + '=' + (i * j) + '\t';
		}
		console.log(str);
	}
}
test2();
//九九乘法表 逆
function test3() {
	for (var i = 9; i > 0; i--) {
		var str = '';
		for (var j = 1; j <= i; j++) {
			str += j + '*' + i + '=' + (i * j) + '\t';
		}
		console.log(str);
	}
}
test3();
//九九乘法表 反
function test4() {
	for (var i = 1; i < 10; i++) {
		var str = '';
		for (var j = 9; j > (i - 1); j--) {
			str += j + '*' + i + '=' + (i * j) + '\t';
		}
		console.log(str);
	}
}
test4();
//九九乘法表 逆反
function test5() {
	for (var i = 9; i > 0; i--) {
		var str = '';
		for (var j = 9; j > (i - 1); j--) {
			str += j + '*' + i + '=' + (i * j) + '\t';
		}
		console.log(str);
	}
}
test5();
//有1、2、3、4个数字，能组成多少个互不相同且无重复数字的三位数？都是多少？
function test6() {
	for (i = 1; i < 5; i++) { // 以下为三重循环,百位
		for (j = 1; j < 5; j++) {//十位
			for (k = 1; k < 5; k++) {   // 个位
				if (i != k && i != j && j != k) {//确保i、j、k三位互不相同 
					console.log(i, j, k);
				}
			}
		}
	}
}
test6();

//判断101-200之间有多少个素数，并输出所有素数（只能被1和它本身整除的自然数为素数）
function test7() {
	var a = true;
	var count = 0;
	for (i = 101; i <= 200; i++) {
		for (j = 2; j < Math.sqrt(i); j++) {
			if (i % j == 0) {
				a = false;
			}
		}
		if (a) {
			count++;
			console.log(i + "");
		}
	} console.log(count);
}
test7();
//打印出所有的“水仙花数”，所谓“水仙花数”是指一个三位数，其各位数字立方和等于该数本身。例如：153是一个“水仙花数”，因为153 = 1的三次方＋5的三次方＋3的三次方
//水仙花数 100-1000 内的水仙花 153=1*1*1+5*5*5+3*3*3
function test1() {
	var count = 0;
	for (var i = 100; i < 1000; i++) {
		var a = parseInt(i / 100);
		var b = parseInt(i % 100 / 10);
		var c = i % 10;
		if (a * a * a + b * b * b + c * c * c == i) {
			count++;
			console.log(i);
		}
	}
	console.log('count:' + count);
}
test1();

//将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。
function test8(num) {
	var n = num;
	var str = '';
	for (var i = 2; i < n; i++) {
		while (n != i) {
			if (n % i == 0) {
				str += i + '*';
				n = n / i;
			}
			else {
				break;
			}
		}
	}

	console.log(num + '=' + str + n);
}
test8(78);

//求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
function test9(a, b) {
	if (a > b) {
		a = a + b; 319 + 377
		b = a - b; 319
		a = a - b; 377
	}
	d = a;
	e = b;
	c = a % b;
	while (c != 0) {
		c = a % b;
		a = b;
		b = c;

	}
	console.log("最大公约数是：" + a);
	c = (d * e) / a;
	console.log("最小公倍数：" + c);
}
test9(319, 377);

//求1000以内的完全数（若一个自然数，恰好与除去它本身以外的一切因数的和相等，这种数叫做完全数。）
function test10() {
	var num, i, m;
	var str = '';
	for (num = 1; num <= 1000; num++) {
		for (m = 0, i = 1; i <= num / 2; i++)
			if (!(num % i)) {
				m += i;
				str += i + '+';
			}
		if (m == num)
			console.log(num + '=' + str);
	}
}
test10();